﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Telerik.WinControls;

namespace Sistema_de_Patrimonio.SDP_UI.Existencias
{
    public partial class Existencias_Inicio : Telerik.WinControls.UI.RadForm
    {
        public Existencias_Inicio()
        {
            InitializeComponent();
        }

        public UInt32 Cuenta;
        public UInt32 Articulo;

        private void Existencias_Salir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        public void Existencias_Inicio_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'dS_Articulos.ArticulosDetalles' Puede moverla o quitarla según sea necesario.
            //this.articulosDetallesTableAdapter.Fill(this.dS_Articulos.ArticulosDetalles);
            // TODO: esta línea de código carga datos en la tabla 'dS_Articulos.Articulos' Puede moverla o quitarla según sea necesario.
            //this.articulosTableAdapter.Fill(this.dS_Articulos.Articulos);
        }

        private void Grid_Articulos_Click(object sender, EventArgs e)
        {

        }

        private void Articulos_Agregar_Click(object sender, EventArgs e)
        {
            SDP_UI.Existencias.Existencias_Alta Alta = new SDP_UI.Existencias.Existencias_Alta();
            Alta.lblarticulo.Text = this.lblarticulo.Text;
            Alta.lblcuenta.Text = this.lblcuenta.Text;
            Alta.lbldescripcion.Text = this.lbldescripcion.Text;
            Alta.lblgramaje.Text = this.lblgramaje.Text;
            Alta.lblmedida.Text = this.lblmedida.Text;
            Alta.lblsaldo.Text = this.lblsaldo.Text;
            Alta.lblunidad.Text = this.lblunidad.Text;
            Alta.lblunidad2.Text = this.lblunidad2.Text;
            Alta.txtTipo.Items[1].Selected = true;
            Alta.txtAltaFechaMovimiento.Value = DateTime.Today.Date;
            Alta.txtSaldoAnterior.Text = obtenerSaldoArticulo().ToString();
            Alta.Show();

            Cuenta = Convert.ToUInt32(Alta.lblcuenta.Text);
            Articulo = Convert.ToUInt32(Alta.lblarticulo.Text);

            Alta.FormClosed += ActualizarGrid;
            Alta.FormClosed += new FormClosedEventHandler(ActualizarGrid);
            Grid_Articulos.Refresh();
        }

        private Decimal obtenerSaldoArticulo()
        {
            SDP_DAL.Existencia_DAL Existencias = new SDP_DAL.Existencia_DAL();
            if (lstCuenta.SelectedItem != null && lstArticulo.SelectedItem != null)
            {
                return (Existencias.CargarSaldoArticulo(Convert.ToUInt32(lstCuenta.SelectedValue), Convert.ToUInt32(lstArticulo.SelectedValue)));
            }
            return 0;
        }

        private void Articulos_Modificar_Click(object sender, EventArgs e)
        {
            SDP_UI.Existencias.Existencias_Alta Alta = new SDP_UI.Existencias.Existencias_Alta();

            if (Grid_Articulos.SelectedRows.Count > 0)
            {
                Alta.modifica = 1;
                Alta.lblarticulo.Text = this.lblarticulo.Text;
                Alta.lblcuenta.Text = this.lblcuenta.Text;
                Alta.lbldescripcion.Text = this.lbldescripcion.Text;
                Alta.lblgramaje.Text = this.lblgramaje.Text;
                Alta.lblmedida.Text = this.lblmedida.Text;
                Alta.lblsaldo.Text = this.lblsaldo.Text;
                Alta.lblunidad.Text = this.lblunidad.Text;
                Alta.lblunidad2.Text = this.lblunidad2.Text;
               
                Cuenta = Convert.ToUInt32(Alta.lblcuenta.Text);
                Articulo = Convert.ToUInt32(Alta.lblarticulo.Text);

                //mov_numero as Codigo, mov_fecha as Fecha, mov_comprobante as Comprobante, mov_procedencia as Procedencia, mov_tipo as Tipo, mov_salidaentrada as Movimiento, ,mov_saldo as Saldo
                Decimal SaldoAnterior = obtenerSaldoArticulo();
                Alta.Codigo = Convert.ToUInt32(Grid_Articulos.SelectedRows[0].Cells[0].Value);
                Alta.txtAltaFechaMovimiento.Value = Convert.ToDateTime(Grid_Articulos.SelectedRows[0].Cells[1].Value);
                Alta.txtComprobante.Text = Grid_Articulos.SelectedRows[0].Cells[2].Value.ToString().Trim();
                Alta.txtProcedencia.Text = Grid_Articulos.SelectedRows[0].Cells[3].Value.ToString().Trim();
                if (Grid_Articulos.SelectedRows[0].Cells[4].Value.ToString().Trim() == "Entrada")
                {
                    Alta.txtTipo.Items[0].Selected = true;
                    Alta.txtSaldoAnterior.Text = (SaldoAnterior - Convert.ToDecimal(Grid_Articulos.SelectedRows[0].Cells[5].Value)).ToString();
                }
                else
                {
                    Alta.txtTipo.Items[1].Selected = true;
                    Alta.txtSaldoAnterior.Text = (SaldoAnterior + Convert.ToDecimal(Grid_Articulos.SelectedRows[0].Cells[5].Value)).ToString();
                }
                Alta.txtMovimiento.Text = Grid_Articulos.SelectedRows[0].Cells[5].Value.ToString().Trim();
                Alta.txtNuevoSaldo.Text = Grid_Articulos.SelectedRows[0].Cells[6].Value.ToString().Trim();
                Alta.BtnAltaAceptar.Enabled = true;

                Alta.Show();

            }

            Alta.FormClosed += ActualizarGrid;
            Alta.FormClosed += new FormClosedEventHandler(ActualizarGrid);
            Grid_Articulos.Refresh();

        }

        private void ActualizarGrid(object sender, FormClosedEventArgs e)
        {
            listBox1_SelectedValueChanged(sender, e);
            lstCuenta.SelectedItem = Cuenta;
            if (Articulo == 0) lstArticulo.SetSelected(0, true);
            else
            {
                int index = lstArticulo.FindString(Articulo.ToString());
                lstArticulo.SetSelected(index, true);
            }
            //else lstArticulo.SelectedItem = Articulo;
            //if(Articulo == 0) lstArticulo.SelectedItem = Articulo;

        }
        
      /*  private void Articulos_Eliminar_Click(object sender, EventArgs e)
        {
            SDP_UI.Articulos.Articulos_Baja Baja = new SDP_UI.Articulos.Articulos_Baja();
            Baja.FormClosed += new FormClosedEventHandler(ActualizarGrid);
            Grid_Articulos.Refresh();
            Baja.Show();
        }
        */
        private void CargarForm(SDP_UI.Articulos.Articulos_Modificar Modificar)
        { 

            Modificar.TxtModificacionInventario.Text =  Grid_Articulos.SelectedRows[0].Cells[0].Value.ToString().Trim();
            Modificar.TxtModificacionCuenta.Text = Grid_Articulos.SelectedRows[0].Cells[1].Value.ToString().Trim();
            Modificar.TxtModificacionDescripcion.Text = Grid_Articulos.SelectedRows[0].Cells[2].Value.ToString().Trim();
            Modificar.TxtModificacionPrecio.Text = Grid_Articulos.SelectedRows[0].Cells[3].Value.ToString().Trim();
            Modificar.TxtModificacionDependencia.Text = Grid_Articulos.SelectedRows[0].Cells[12].Value.ToString().Trim();
            Modificar.TxtModificacionConcepto.Text = Grid_Articulos.SelectedRows[0].Cells[5].Value.ToString().Trim();
            Modificar.txtModificacionValorResidual.Text = Grid_Articulos.SelectedRows[0].Cells[4].Value.ToString().Trim();
            if(Grid_Articulos.SelectedRows[0].Cells[6].Value.ToString().Length > 0)
            Modificar.TxtModificacionFechaAdquisicion.Value = Convert.ToDateTime(Grid_Articulos.SelectedRows[0].Cells[6].Value);
            if(Grid_Articulos.SelectedRows[0].Cells[7].Value.ToString().Length > 0)
            Modificar.TxtModificacionFechaInforme.Value = Convert.ToDateTime(Grid_Articulos.SelectedRows[0].Cells[7].Value);
            if (Grid_Articulos.SelectedRows[0].Cells[8].Value.ToString().Trim() == "Caja Chica") Modificar.TxtModificacionTipoDocumento.Items[0].Selected = true;
            else if (Grid_Articulos.SelectedRows[0].Cells[8].Value.ToString().Trim().Contains("Compra")) Modificar.TxtModificacionTipoDocumento.Items[1].Selected = true;
            else if (Grid_Articulos.SelectedRows[0].Cells[8].Value.ToString().Trim() == "Varios") Modificar.TxtModificacionTipoDocumento.Items[2].Selected = true;
          //  else Modificar.TxtModificacionTipoDocumento.Items[1].Selected = true;
            Modificar.TxtModificacionNumeroDocumento.Text = Grid_Articulos.SelectedRows[0].Cells[9].Value.ToString().Trim();
            Modificar.TxtModificacionPorcentaje.Text = Grid_Articulos.SelectedRows[0].Cells[10].Value.ToString().Trim();   

        }


        private void Articulos_Salir_Click_1(object sender, EventArgs e)
        {
            this.Close();
        }

        private void Articulos_Delete_Click(object sender, EventArgs e)
        {
            DialogResult respuesta;
            respuesta = MessageBox.Show("¿Esta seguro que desea elminar el movimiento seleccionado?\n", "Eliminar ...", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (respuesta == DialogResult.Yes)
            {
                SDP_DAL.Existencia_DAL Eliminar = new SDP_DAL.Existencia_DAL();
                calcularNuevoSaldo(Convert.ToUInt32(lblcuenta.Text), Convert.ToUInt32(lblarticulo.Text), Grid_Articulos.SelectedRows[0].Cells[4].Value.ToString(), Convert.ToDecimal(Grid_Articulos.SelectedRows[0].Cells[5].Value), Convert.ToDecimal(Grid_Articulos.SelectedRows[0].Cells[6].Value));
                Eliminar.MovimientoDelete(Convert.ToUInt32(Grid_Articulos.SelectedRows[0].Cells[0].Value));
                listBox1_SelectedValueChanged(sender, e);

                Cuenta = Convert.ToUInt32(lblcuenta.Text);
                Articulo = Convert.ToUInt32(lblarticulo.Text);
                Grid_Articulos.Refresh();
            }
        }

        private void calcularNuevoSaldo(UInt32 Cuenta, UInt32 Articulo,String Tipo, Decimal Movimiento, Decimal SaldoViejo)
        {
            Decimal SaldoNuevo = 0;

            if (Tipo == "Entrada") SaldoNuevo = SaldoViejo - Movimiento;
            else SaldoNuevo = SaldoViejo + Movimiento;

            SDP_DAL.Existencia_DAL ActualizarSaldo = new SDP_DAL.Existencia_DAL();
            ActualizarSaldo.ActualizarSaldo(Cuenta, Articulo, SaldoNuevo); 

        }

        private void commandBarButton1_Click(object sender, EventArgs e)
        {
            Existencias_Inicio_Load(sender, e);
            Grid_Articulos.Refresh();
        }

        private void Existencias_Inicio_Load_1(object sender, EventArgs e)
        {
            SDP_DAL.Existencia_DAL Existencias = new SDP_DAL.Existencia_DAL();
            lstCuenta.DisplayMember = "Cuenta".Trim();
            lstCuenta.ValueMember = "Cuenta".Trim();
            lstCuenta.DataSource = Existencias.ExistenciaListCmboxCuenta().Tables[0];
           // lstCuenta.SetSelected(0, true);
            lstCuenta.SelectedItem = lstCuenta.Items[0];

        }

        private void listBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            SDP_DAL.Existencia_DAL Existencias = new SDP_DAL.Existencia_DAL();
            
            if(lstCuenta.SelectedItem != null)
            {
                lstArticulo.DisplayMember = "Articulo".Trim();
                lstArticulo.ValueMember = "Articulo".Trim();
                lstArticulo.DataSource = Existencias.ExistenciaListCmboxArticulo(Convert.ToUInt32(lstCuenta.SelectedValue)).Tables[0].DefaultView;
              //  if (Articulo == 0) lstArticulo.SelectedItem = lstArticulo.Items[0];
                //else lstArticulo.SelectedItem = Articulo;

                if (Articulo == 0) lstArticulo.SetSelected(0, true);
                else
                {
                    int index = lstArticulo.FindString(Articulo.ToString());
                    lstArticulo.SetSelected(index, true);
                }
                //lstCuenta.SetSelected(0, true);
            }
            
        }

        private void lstArticulo_SelectedValueChanged(object sender, EventArgs e)
        {
             SDP_DAL.Existencia_DAL Existencias = new SDP_DAL.Existencia_DAL();
             if (lstCuenta.SelectedItem != null && lstArticulo.SelectedItem != null)
             {
                 DataSet ds = Existencias.CargarArticulo(Convert.ToUInt32(lstCuenta.SelectedValue), Convert.ToUInt32(lstArticulo.SelectedValue));
                 lblcuenta.Text = Convert.ToUInt32(lstCuenta.SelectedValue).ToString();
                 lblarticulo.Text = Convert.ToUInt32(lstArticulo.SelectedValue).ToString();
                 lbldescripcion.Text = ds.Tables[0].Rows[0].ItemArray[0].ToString();
                 lblsaldo.Text = ds.Tables[0].Rows[0].ItemArray[1].ToString();
                 lblmedida.Text = ds.Tables[0].Rows[0].ItemArray[2].ToString();
                 lblunidad.Text = ds.Tables[0].Rows[0].ItemArray[3].ToString();
                 lblunidad2.Text = ds.Tables[0].Rows[0].ItemArray[3].ToString();
                 lblgramaje.Text = ds.Tables[0].Rows[0].ItemArray[4].ToString();

                 cargarGridMovimientos();
                 /*Grid_Articulos.DataSource = ds;
                 Grid_Articulos.DataMember = ds.Tables[0].TableName;
                // Grid_Articulos.Columns[2].Width = 350;
                 Grid_Articulos.Columns[0].Width = 350;
                 //Grid_Articulos.Columns[1].Width = 50;
                 //Grid_Articulos.Columns[1].IsVisible = false;
                 Grid_Articulos.Refresh();*/
             }
        }

        private void cargarGridMovimientos()
        {
            SDP_DAL.Existencia_DAL Existencias = new SDP_DAL.Existencia_DAL();
            if (lstCuenta.SelectedItem != null && lstArticulo.SelectedItem != null)
            {
                DataSet ds = Existencias.CargarMovimientosArticulo(Convert.ToUInt32(lstCuenta.SelectedValue), Convert.ToUInt32(lstArticulo.SelectedValue));
                //mov_numero as Codigo, mov_fecha as Fecha, mov_comprobante as Comprobante, mov_procedencia as Procedencia, mov_tipo as Tipo, mov_salidaentrada as Movimiento, ,mov_saldo as Saldo
                Grid_Articulos.DataSource = ds;
                Grid_Articulos.DataMember = ds.Tables[0].TableName;
                Grid_Articulos.Columns[2].Width = 150;
                Grid_Articulos.Columns[1].FormatString = "{0:d}";
                Grid_Articulos.Columns[3].Width = 300;
                Grid_Articulos.Columns[4].Width = 70;
                Grid_Articulos.Columns[5].Width = 150;
                Grid_Articulos.Columns[6].Width = 150;
                Grid_Articulos.Columns[0].Width = 60;
                Grid_Articulos.Columns[1].Width = 90;

                //Grid_Articulos.Columns[1].IsVisible = false;
                if (Grid_Articulos.SelectedRows.Count > 0)
                {
                    Articulos_Modificar.Enabled = true;
                    Articulos_Delete.Enabled = true;
                }
                else
                {
                    Articulos_Modificar.Enabled = false;
                    Articulos_Delete.Enabled = false;
                }

                Grid_Articulos.Refresh();
            }
        }

       /* private void Articulos_Inicio_Activated(object sender, EventArgs e)
        {
            Articulos_Inicio_Load(sender, e);
        }*/

    }
}
